home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-12-20 | 31.4 KB | 532 lines | [TEXT/ALFA] |
- What's new in 2.3?
- • The MEG2Decoder had problem where it screwed up display of MPEGs that were
- not a multiple of 16 in width. Fixed
- • A serious problem with MPEGEncoding that often produced garbage MPEGs is
- fixed.
- • All encoding (QT and MPEG) is now done based on time. not frame number.
- This makes audio support much easier.
- • Preliminary audio support has been added for MPEGs. See the ``Readme Sound''
- file for details.
- • Opening QT movies (especially long ones) is faster.
- • Some minor user interface tweaks.
- • Some cosmetic bugs fixed.
- • You can now choose the frame rate at which to play MPEGs and PICT
- pseudo-movies.
-
- What's new in 2.2.3?
- • Bug fixes:
- * Under certain circumstances an MPEG would stop playing just before the
- very last or first frame was displayed.
- • Speed tweaks.
-
- What's new in 2.2.1?
- • Bug fixes:
- * In very special circumstances (a slightly corrupt MPEG that was missing
- a SequenceEndCode, I was writing a few bytes over the end of a memory
- block. This lead to crashes on 020/030 class macs.
- * When encoding an MPEG, I (very stupid, I know) landed up aliasing the file
- reference number associated with the MPEG file, then closing that
- fileReferenceNumber twice, something Apple warn is not a great idea.
- * At startup if the user had a corrupt prefs file and tried to quit,
- Sparkle would crash---I was ForgetHandle()ing a resource handle. Grrr!
- * Fixed Yet Another problem with the SC++ BEL macros. This one involved
- crummy Symantec code for testing if an object's on the stack that fails
- when threads are active.
- * Was setting the bkPixPat of a window to NULL when closing it--dumb.
- * Was disposing of a handle that was disposed of in some library code
- written by someone else. Taligent have a nice naming convention for
- libraries to prevent this sort of thing---it can't happen a moment too
- soon.
- * Fixed a few anomalies I noticed in the way things are drawn on 1 and 2
- bit screens (like anyone uses Sparkle on one :-) ).
- • Tweaks to make the progam feel snappier:
- * Wherever I was calling FlushVol() to dump the disk cache to disk, I now
- do that asynchronously. Async IO is also used in a few other places. It's
- not yet used for reading files, but that will come.
- Note that QuicKeys, for reasons that (I'll be charitable and not state my
- true feelings) make no sense to me, disables asynchronous IO so you won't
- see any effect. If you think this sucks, call CE Software and tell them.
- * I now preload QuickTime stuff at startup to avoid latencies later when
- I need it.
- * When building a PICT pseudo-movie, a much faster algorithm for
- scanning for the files of the movie is used.
- * When displaying a PICT pseudo-movie, the disk should be accessed rather
- less often than before
- • MPEG encoding has been sped up. I have dropped the Berkeley
- encoding algorithms and used my own algorithms. (Where these are similar to
- the Berkeley algorithm, I use the same name simply for consistency.)
- My algorithms are not only faster but produce slightly smaller files
- and use more elegant, shorter code---a perfect win win win situation.
- The Technical Readme file contains brief descriptions of the properties
- of the new algorithms.
-
- What's new in 2.2?
- • The usual cleanups of course.
- • Substantially improved building of the index when an MPEG is opened.
- The new code is about five times the speed of the old code, and the
- interleaving of CPU and file access is done more carefully.
- This should make windows popup more snappily when you open an MPEG file.
- (Unfortunately if you're pulling the MPEG off a slow hard drive, CD-ROM
- or network this speed is limited anyway by the file system, not the CPU
- calculations.)
- • I should have had a TRY/CATCH handler in place for if an error occurred
- while the dialog boxes were being popped up for saving an MPEG or QT
- movie. This could have led to crashes (more likely just strange error
- dialogs), but is now fixed.
- • If you ran Sparkle in the background on an 8-bit color screen while a
- foreground app kept creating a number of different palettes, then when
- Sparkle was quit an error message could occur (I was running down an
- array associated with each new palette destroying items but I should
- have run down the array starting from the end not the beginning of the
- array.)
- • Thread synchronization is now done ``properly'' using a number of
- semaphores. This replaces the old method of using a very carefully
- orchestrated dance to move between threads. The new method is
- theoretically safer (and makes it a lot easier to alter the code) but
- being new I may have forgotten something in one routine or two. Bear
- with me and report any strange bugs---machine locking up, strange error
- messages, garbled images.
- • Some (very strange) QT movies may have multiple superimposed video tracks.
- In this case when Sparkle created an MPEG or QT movie from the original
- QT movie parts of the image you saw could have random colors in them.
- This is now fixed.
- • Other strange QT movies could be encoded with not a fixed frame rate but
- every frame lasting a different amount of time. When creating an MPEG
- nothing can be done about that, but when creating a new QT movie I allow
- a frame rate of zero which will create all frames at whatever time they
- should be created at.
- • When a movie was being encoded to some other format the movie controller
- was not drawn with all decorations suppressed. Now it is.
- • When an MPEG window was opened said window displayed some flicker as pieces
- of it were drawn. This has been cleaned up. Likewise for PICT-sequence
- windows.
- • In a few places certain variables that should gave been initialized to NULL
- or zero were not. In theory if an exception ocurred in these blocks of
- code a crash might occur. Anyway now fixed.
- • A bug in CustomGetFile() in the MacOS leads to a loss of 64 (or so) bytes
- every time a file selection dialog box is displayed if there is an `ictb'
- associated with the dialog box. (It looks like the `ictb' is read in and
- DetachResource'd() then the handle created that way is never disposed of.)
- This was fixed by removing the `ictb's associated with these dialogs.
- The same holds true for `mctb's if the dialog contains a popupmenu. I would
- guess it also holds for `cctb's, but it does NOT hold for `dctb's.
- • New look---windows with grey background, can shrink video as small as you like.
- a startup splash screen.
- • If you decide partway through startup you don't want to run Sparkle, hit
- command-. (command-period) to abort.
- • PowerMac native (and very fast). A 6100/60 gives three times the
- playback rate of my Quadra 610.
- • Rewritten MPEG encoder to use way less memory.
- • MPEG decoding code has been restructured so as to present a block of
- code that can easily be dropped into other environments. This will form
- the basis for various QT components/drivers I'd like to write to give
- much tighter integration with QT.
- • All large memory allocation is done through temp mem. Basically this
- means you shouldn't ever need to increase the size of Sparkle's
- partition but you can open and save files limited only by all the
- memory on your mac.
- • Foundations have been laid for AppleScripting. You probably can't do
- any useful scripting with this release but that will change soon.
- • User interface has been tweaked a little. I hope you like the changes.
- • The most common problem with the 2.1 versions was that the preferences
- file would become corrupted leading to random errors. The prefs file
- handling has been changed in this version to make that much less likely.
- If this release gives you problems, destroy the Sparkle prefs file then
- try again.
- • Many many bug fixes.
-
-
- What's new in 2.1.5?
- • Somewhere in the cleanups of code of the last few revs I landed up
- dividing some color motion vectors by two too often resulting in
- misaligned color on MPEGs created without half-pixels. This is fixed.
-
- What's new in 2.1.4?
- • Many many internal cleanups of the code as part of my cleanup for
- PowerPC. If these cleanups broke anything, please tell me.
- • There was in bug in some earlier versions so that when you opened Sparkle
- on a system without QuickTime rather than quitting gracefully it could
- crash when quitting. Now fixed.
- • Minor changes have been made to better support Macintosh Easy Open.
- • When saving an MPEG or QT movie in an alternative form the play button
- of the movie controller is hidden which I think looks better.
- • When a movie saving was in progress and was paused, if the relevant
- window was covered then uncovered (generating an update event)
- Sparkle would hang. This was because Sparkle tries to switch to
- a thread that has been put to sleep. This has been fixed.
- • If an MPEG were opened and immediately command-S were typed, once the
- saving was done it was possible for Sparkle to popup an error message.
- The problem was that the very first update event for the MPEG window,
- used to initialize some variables, would be discarded is a save were
- begun immediately. The code used when an MPEG is opened has been fiddled
- a little to prevent this.
- • I was asked by some people doing Sparkle for batch conversion of MPEG
- and QT for a way for Sparkle to indicate when it is done converting a
- file. I won't have AppleScriptability in place for a few months but I
- did put in a quick hack to allow this for users of QuicKeys. Look in the
- ReadMe 2nd file for details (do a search for QuicKeys).
- • In the code I added to 2.1.3 to support halfPixels I made a typo which
- under rare circumstances would set the color of a block incorrectly or
- (if you were unlucky) crash. This is fixed.
- • Memory used for MPEG encoding MPEGs has been dramatically reduced.
- For the case of encoding MPEGs with only I-frames, the memory
- required is 1/6th of what was required in 2.1.3 and earlier versions.
- For MPEGs using P and/or B frames, memory required is about .4 of
- what required earlier (actually 15/36). These memory requirements
- will be shrunk further in later versions of the code.
- • The MPEG Playback prefs dialog has cleaned up a little and behaves a
- little more intuitively. Now the options under the 8bit color section
- always apply when the screen is 8bit color, regardless of the 8bit
- dithering method used.
- There is now a tryout button. Click there to see how the changes you
- make alter what you see.
- • Two further options have been added to the MPEG Encoding dialog to give
- you a little more control over this behavior.
- You can now specify whether half-pixel encoding is used or not
- (in the past half-pixels were always used).
- Likewise you can specify whether or not to compare against raw
- reference frames or reference frames decoded from the MPEG stream being
- created (in the past decoded reference frames were always used).
-
- What's new in 2.1.3?
- • There was a bug in 2.1.2 that prevented one (usually) from playing MPEGs
- in play all frames mode. So sorry about that. This is fixed.
- • I have (FINALLY) fiddled the P and B frame calculations to be EXACT at
- highest quality settings (ie when saving an MPEG to a secondary file.)
- The last few touches involved doing all the finicky details specified
- in the MPEG DIS (which in the worst case can involve compositing a single
- image point from values spread over nine different places. The differences
- are very subtle but are visible---large areas of smooth texture in
- particular in the past tended to develop a slight granularity which is
- now cured.
- This code involved coding a huge number of special cases and I may have
- made a mistake in a case or two. I have run all my example MPEGs through
- and they look good but if you see a block that looks misaligned or has a
- different color from what it should have, please tell me so I know I
- need to fix a mistake.
- • There was a bug in 2.1.2 and earlier versions where, if an MPEG was playing
- and you closed the window there was a small chance of an error message
- popping up. This bug was due to what's called a race condition.
- It should have been fixed, but if not please tell me.
-
- What's new in 2.1.2?
- • In 2.1 when a window was first opened and the Video menu selected, the
- menu showed Palindrome looping as on even though it was not. This is fixed.
- • In 2.1 I had a serious (crashing) possible bug that could occur when a
- window was closed. This was because the life cycles of video encoding
- threads and video playing threads are different. I must rationalize
- these to one model, but till then I've applied a quick and dirty fix.
- • Long complicated pathways through about six auxiliary functions, used when
- threads died and a holdover from the Sparkle 1.x days, have been removed to
- use a much simpler virtual function based scheme. This is slightly faster
- and, more important, much simpler hence, hopefully, less buggy.
- • Deactivating/activating of the ``Change file type to MPEG'' radio button in
- the open file dialog was a little erratic. This has been fixed.
- • Rudimentary balloon help has been added.
- • When memory is very low and a window starts being opened, but fails
- partway, the cleanup code was slightly wrong. Now fixed.
- • Improved the display on 4-bit color screens. It was very blocky.
- • Changed the progressbar to display properly on 4-bit color screens.
- The two colors used for foreground and background were being mapped onto
- the same color.
- • Change the progress bar to update itself better when parts of the window are
- uncovered. Before parts would be drawn quite a while before other parts
- giving a result that looked silly.
- • Added a menu option to allow operation without ever yielding time to
- WaitNextEvent. If you don't need to give time to background applications,
- use this option for faster, less jerky, playback.
- • Speech manager code used to announce a delay when encoding an MPEG
- could, if timing was just wrong, crash. I think the problem was that the
- Speech Manager was building internal data structures on the stack, and
- that stack disappeared when the the MPEG encoding thread died. Anyway
- I've modified the speech code so this can't happen.
- • Discovered a serious problem in my video encoding code. When an MPEG
- window was resized while it was being converted to another MPEG or QT
- movie, the result could be a munged image for a few frames. The fix
- involved a major structural readjustment of Sparkle---ALL video
- manipulations now pass through ThreadEvent queues---but the result is
- that for the first time I feel confident about the theoretical
- underpinnings of Sparkle---that while minor bugs may remain, there are
- no conceptual nasties waiting to bite me.
- • When windows are resized, the resizing is done in a manner that leaves
- no gunk in the window in the moments before the resizing is complete.
- • I discovered yet another way in which things could crash---The MacOS call
- DrawPicture() will crash if it runs out of memory---thanks Apple.
- There's nothing I can do about this, so what I did do is try to trap
- situations that form a pattern of using DrawPicture() while memory is
- getting lower and warn you that memory is running low. This doesn't
- catch all situations but catches some.
- • The play/pause button no longer toggles between states when you start a
- movie saving or pause it. This is because what I was doing to get this
- to work in QT 1.x no longer works nicely in QT 2.0 --- flickering frames
- result. I guess this is a consequence of DataPipe or something.
- Anyway I've replaced this with indicators in the title bar.
- • I made a few changes to allow easier more sensible playback of QT movies that
- consist of only sound. This is at present rudimentary but is a start.
-
- What's new in 2.1?
- • Yet again memory management has been fiddled with. Previous tinkering with
- memory management was to ensure that my own code never crashed for lack
- of memory. Building on top of that, I've tried to ensure that calls to
- the operating system won't crash for lack of memory. This is more
- difficult because, obviously, I don't know just what the memory
- requirements of each call are. However I've done the best I can, and
- the resultant code seems even more robust than 2.02.
- • The scheduling has been revamped based on the threading. I now make
- intelligent decisions about which thread to schedule when. Also calls to
- the main event loop, which were very expensive in time, have been cut
- dramatically. the result is about a 15% speed boost all round.
- • MPEG playback is now based on genuine timing, not on simply playing
- every frame as fast as possible. Like QuickTime movies, you can play
- MPEGs back in real time or play every frame. I also now support the
- movie controller variable speed controls obtained by control-clicking
- on the forward/backward stepper buttons.
- • You can now set QT and MPEG movies to loop.
- • You can now grow or shrink MPEG and QT movie windows.
- • The cursor is now hidden when movie playback starts, until you move it.
- This seems to be a reasonable compromise for preventing flickering cursor
- when starting a movie using the keyboard, but atill allows the user
- easily to find the cursor when needed.
- • When files are opened, windows are now tiled in a vaguely intelligent fashion,
- attempting both to use the available screens with best depth, and to
- avoid window overlap.
- • Dragging windows is now aligned to a grid of optimal window placement. This
- gives better movie playback.
- • Can now show/hide the progressPane, movie controller and frame count with the
- tab key using tab, shift-tab, control-tab.
- • The drawing of the progress bar has been altered slightly, to fix cosmetic
- defects and to make the appearance closer to that of the movie controller.
- • Support for MPEGs with a pixel aspect ratio not equal to one has been added.
- At present this isn't switched on because some dumb MPEGs out there
- have a bogus aspect ratio encoded in them. However if someone wants
- this feature right away, I'll add a user interface to access it.
- • Support for MPEGs with multiple sequence headers has been added, not
- that I have ever seen such an MPEG.
- • Playback is now much faster through a variety of mechanisms. However
- this has, as a consequence, lower quality playback. You may set through
- preferences which optimizations you're willing to accept for faster
- playback and which you're not willing to accept. All optimizations are
- turned off when converting an MPEG to another format so that you'll get
- the best possible quality.
- Playback speed is now about 1.6 times faster for 24 bit screens, about
- 2.5 times as fast for 8 bit grey screens, and improvements in between for
- other screen depths.
- • Special purpose display code is used for
- 24 bit, 16 bit and 8 bit color screens and 8 bit grey screens.
- All other screens are sent through one of the above special purpose codes
- then use QuickTime to convert the pictures to the appropriate screen depth.
- Obviously special purpose code is faster. If I get lots of calls for
- screen depths other than the one's I'v supported directly, I'll look into
- adding more special purpose code.
- • In 2.0 I broke the support for adding files called name.mpg, but without
- a file type of MPEG so you could open files of that type but nothing
- would happen. Sorry about that. It's been fixed.
- • When files are opened and are not of the default Mac types (for example
- files imported from a UNIX box, or files on a PC CD ROM) Sparkle uses
- more intelligence in deciding whether to open these files as MPEGs, QT
- movies or pictures. If this mechanism is still not general enough for
- some users (I image mainly users sharing data with PCs), let me know.
- • The ``official'' MPEG encoding pattern of IBBPBBPBBPBB is now a pre-defined
- option. Some people asking for this as a pre-defined option have given me
- slightly different patterns as the ``official'' pattern. However what I
- have used is, to the best of my knowledge correct, and I'm assuming these
- people who wrote to me simply made typos. If you have comments on this,
- please mail me.
- • I twiddled the RGB to YCrCB conversion code that is the first step in
- encoding MPEGs. The changes won't affect anyone except people creating
- MPEG movies whose width or height is odd, in which case the very last
- row or column of pixels will have more accurate color. The important
- change, however, was that I no longer read beyond the end of some arrays,
- so I'm ready for when Apple give us protected memory a year from now.
- • Under certain rare circumstances, depending on the number of frames int the
- input file and the IPB pattern used, the last frame or two of the input
- would not be saved in the output MPEG. This is fixed.
- • MPEG encoding now can specify a frame rate (in the past this was always
- 30 fps). Sure the range of choices is limited---blame the people who
- wrote the MPEG spec---those are, basically, the only choices.
- 1) Can people with MPEG hardware verify that this works for me?
- On my mac with 10fps max playback, it's tough to see if this works.
- 2) There are some frame rates I've omitted that are very close to those
- I give, for example 29.97 fps. At some point i'll get the finicky
- time right to support these but it's a pretty low priority compared
- to sound.
-
- What's new in 2.01?
- • Implemented padding YUV macroblocks with a repeat of the last value of
- each YUV triplet when macroblocks at the edge of a frame spill over
- the edge. The most common case of this is a 120 pixel high movie with a
- macroblock height of 128. In the past this spillover was filled randomly.
- The result of this is that MPEGs created are about 15% smaller.
- • Some diddling with the code used by the IDCT algorithm gives a speed boost
- of about 5% to both playing and encoding MPEGs.
- • Fixed a serious bug that prevented you from playing an MPEG if you started
- playing it then interrupted it. A nice byproduct of this is that I got
- jogging of MPEGs fully operational. You can now repeatedly view a section
- of the MPEG by hitting command-right-arrow then command-left-arrow to keep
- the MPEG moving forwards then backwards.
- • Altered the alert popped up when the Thread Manager is not present to make
- it more palatable to corporate and institutional users.
- • Fixed the MPEG buffering which would give problematic results for very small
- MPEGs (say three frames or less).
- • Finally went through all resources, marking them purgable or not and removing
- the unnecessary ones.
- • Fixed the "PBBIBB" default frame set to make it correspond to the user view
- of things, not my programmer's view.
- • Fixed a bug that prevented a temporary movie created by the movie controller
- handling an MPEG file from being destroyed.
- • Fixed two bugs in the Think Class Library dealing with the loading of dialogs
- then manipulating them without setting their memory blocks to non-purgable.
- • Fixed a long-standing bug in the MPEG player buffer-handling code that
- would cause the MPEG frame index to be incorrect if it was created while
- memory was short. This probably never caused problems except for very long
- MPEGs.
- • When converting a QT movie into a different movie form, the dialog that comes
- up asking you for compression options will have the frame rate and key
- frame rate set at what the original movie used, sparing you from having to
- guess. I will eventually have this working across all file conversions,
- not just movie-->movie.
- • The Think C 6 compiler contains a bug when performing code-motion optimization
- on complex loops. If you run through the assembly it produces in this case,
- it performs some very nifty register coloring and creating induction
- variables for the loop. It then leaves out one crucial instruction to
- update one of the induction variables each pass through the loop and so
- the code is garbage.
- As far as I can tell, this only affects one function in my code and I have
- used a #pragma there to prevent it happening, but the fact that bugs like
- this exist in the compiler is a little worrying.
- • Revised all memory allocation so that it is more likely to not to use up all
- memory reserves and leave nothing for toolbox.
- • Found an especially nasty bug involving grabbing frames from a QT movie
- which, when memory ran low, would leave the system GrafPort/GDevice
- environment in an inconsistent state.
- • Revised all uses of GWorld to use tempMem, but fallback to local heap if
- tempMem is unavailable.
- • Altered the strings used to popup error messages at startup if QuickTime
- is not available. These got mixed up when I moved code around.
- • The code to build the MPEG index when an MPEG is opened would run out of space
- when a very large MPEG was opened---one of a thousand frames or more. Now
- memory is allocated for this a little more flexibly.
- • Fixed a bug I inserted when I changed from Sparkle 1.6 to 1.7. I rewrote the
- Berkeley motion vector code to speed it up and in the process made one
- little typo, shifting a variable right by 1 not 2. The effect of this, in
- Sparkles 1.7 and 2.0 was that, under very rare occasions, blocks of color
- would appear a few pixels off from where they should be. The only place I
- ever saw this was three or four frames of the MPEG sales110.mpg.
- This is not related to a separate problem.
- The motion estimation code in the MPEG encoder (at present the Berkeley code
- with practially no changes) is not perfect. It sometimes creates
- blocks that appear to be wildly off from where they should be (by quite a few
- pixels). This is not very obvious in real life, but is very obvious in animation.
- This is largely a quantization artifact---it goes away if you lower the
- quantizations. But obviosly you don't want to do that always, just where
- necessary, so you really want a smarter quantizer that is adaptive.
- I'll work on issues like this as soon as I can.
- • When converting a movie with sound to MPEG or QT, occasionally pops of sound could
- be heard. This is fixed.
- • When converting movies with very low keyframe rates (say 20 or more dependent
- frames per keyframe) occasionally the display of the movie would get confused
- and appear to alternate between two different frames. This is fixed.
-
- What's new in 2.0?
- • The structure of the code has been completely altered to be based on
- threads. This makes it much easier for me to add new features to the code
- while having it retain MultiFinder friendliness.
- • Now opens and plays QT movies.
- • Now can create MPEG files. General conversion from
- {QT or MPEG}--->{QT or MPEG} is possible.
- • Many minor changes to the way files are opened, named and such.
- • Makes minor use of the speech manager if installed.
- • You can now play MPEGs backwards.
-
- What's new in 1.71?
- • The progress bar now updates itself properly at the very end of saving
- each frame to Quicktime. It also draws itself better on b/w screens.
- • More of the default QT movie player keystrokes now work.
- • The app notes if an MPEG file has many errors and if so warns you that
- it has probably been transferred to the mac incorrectly.
- • I have incorporated a workaround to make Sparkle work with the QT VM
- extension. However I do not recommend you use the two together. If you do
- use QT VM you will find Sparkle's memory usage a little less efficient
- than without using QT VM. This is because of the way QT VM works.
- • Fixed a bug that caused unusually sized MPEGs to display as distorted.
- • Sparkle should now cope a little better with low memory situations.
- • Added a small tweak to improve drawing on 16bit screens under low
- memory conditions.
- • Uses the most recently released version on the floating windoid.
- • I have learned of an app that will convert QT to MPEG on the mac. It's
- not the easiest thing to use and I recommend this only for people
- who really need this, not for people who just want to play around.
- See the README file for details.
-
- What's new in 1.7?
- • Opening files is much faster.
- • Fixed the size of the checkboxes in the Open File dialog to the correct
- size for all those millions of people who use Chicago as their system
- font cause they have no sense of aesthetics. Oops.
- • Now when Sparkle changes the file-type of an file, the Finder will update
- the icon immediately, instead of forcing you to open and close the
- folder to see a new icon. Thanks to Jamie McCarthy for telling me how
- to do this.
- • Added an "About Sparkle" dialog box to quieten the constant stream of
- complaints about this.
- • Changed the way progress is reported. I think the new scheme feels
- rather more elegant. (If you have a fast machine and only use small
- MPEGs, you may not notice this change much.)
- • Adde random access. You can now use the step backward stepper, or
- simply click in movie controller where you want to go. All standard
- movie controller clicks and keystrokes are supported.
- • Restructured the internal code vastly. This is what took most of the
- time and while it doesn't directly help you users, it gives me
- a framework that's much easier to build on. For example it should be
- trivial to add Apple Event support when I get round to that.
- • Three or four minor bugs were squelched, mostly involving Sparkle crashing
- when it encountered MPEGs with invalid data in them.
- • Now quits gracefully when started on a 68000 mac like a Classic, rather
- than crashing. I'm sure lots of people care about this.
- • Added better multi-tasking support. This takes two forms.
- One is that the length of the timeslices Sparkle uses before giving up
- the CPU are now absolute times. Before they were numbers that worked
- well for my SE/30, but probably not optimally for slower or faster
- machines.
- The second is that you can now context switch out of Sparkle while it
- is doing slow QT conversions (especially converting to Compact Video).
- The way I have implemented this is not wonderful, but the best I can
- do given the present way the code is structured. The next version
- will use the Thread Manager and will do this rather better.
- This second form of timeslicing is done through the
- SetSequenceProgressProc() call which is new in QT1.6 and which is why
- I now require use of QT1.6. Also QT does not yield the CPU very often,
- and (as far as I know) there is no way to make it yield more often.
- So while your machine is no longer completely frozen as it does its
- conversion, it's still not too pleasant to use for typing. I can't do
- much about this---complain to Apple and tell them to change this part of
- QT, or better yet the whole OS.
-
- What's new in 1.6?
- • I became tired of continually having to explain to people about mac
- file types, so I wrote a file filter function for the Open File dialog
- box which displays ALL files with a .mpg suffix. This should make use a
- lot easier for novices.
- • Fixed a bug that involved writing to NULL.
- • Fixed a bug that prevented IBP type MPEGs from rewinding when they
- reached the end and the play button was hit twice.
-
- What's new in 1.5.2?
- • I was disposing of a handle twice (specifically I was disposing of a
- pixmap and then its colortable, not realizing that DisposPixMap took
- care of the colortable for me.) Thanks to Dan Sears for pointing this out.
- I never noticed a problem due to this bug, but it's probably good to
- have killed it.
-
- Whats new in 1.5.1?
- • One part of my speed optimizing code was not being initialized properly.
- This caused a very specific type of MPEG file to show parts of its first
- frame as greenish blobs. Now fixed.
- • The code to detect errors in a corrupted MPEG file has been made even
- more robust. Substantially better recovery from such errors, by
- rebuilding the lost parts of a frame from the previous frame, has been
- introduced. Thanks to a wonderfully corrupt MPEG file I pulled off
- usenet with about 15 misc errors in it for pointing out new and
- ingenious ways to fail.
- • New icons, courtesy of Richard Lim in Britain. I hope you like them.
- You will have to rebuild the desktop to see them.